package org.jeecg.modules.mes.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.mes.entity.MesTaskParticipant;

import java.math.BigDecimal;
import java.util.List;

/**
 * @Description: 任务参与者表
 * @Author: jeecg-boot
 * @Date: 2025-08-30
 * @Version: V2.0
 */
public interface MesTaskParticipantMapper extends BaseMapper<MesTaskParticipant> {

    /**
     * 根据任务ID获取所有参与者
     * @param taskId 任务ID
     * @return 参与者列表
     */
    List<MesTaskParticipant> getParticipantsByTaskId(@Param("taskId") String taskId);

    /**
     * 根据员工ID获取参与的任务
     * @param employeeId 员工ID
     * @param status 状态（可选）
     * @return 参与者列表
     */
    List<MesTaskParticipant> getParticipationsByEmployeeId(@Param("employeeId") String employeeId, 
                                                          @Param("status") Integer status);

    /**
     * 更新参与者完成进度
     * @param participantId 参与者ID
     * @param completedQuantity 完成数量
     * @return 更新行数
     */
    int updateParticipantProgress(@Param("participantId") String participantId,
                                 @Param("completedQuantity") Integer completedQuantity);

    /**
     * 完成任务参与
     * @param participantId 参与者ID
     * @param qualityScore 质量评分
     * @param efficiencyScore 效率评分
     * @return 更新行数
     */
    int completeParticipation(@Param("participantId") String participantId,
                             @Param("qualityScore") BigDecimal qualityScore,
                             @Param("efficiencyScore") BigDecimal efficiencyScore);

    /**
     * 获取任务的参与者统计信息
     * @param taskId 任务ID
     * @return 统计信息
     */
    MesTaskParticipant getTaskParticipantStats(@Param("taskId") String taskId);

    /**
     * 检查员工是否已参与该任务
     * @param taskId 任务ID
     * @param employeeId 员工ID
     * @return 参与者记录
     */
    MesTaskParticipant checkEmployeeParticipation(@Param("taskId") String taskId, 
                                                 @Param("employeeId") String employeeId);
}
